var rendererOptions = {
    draggable: false
};
var directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);;
var directionsService = new google.maps.DirectionsService();
var map;

var australia = new google.maps.LatLng(-25.274398, 133.775136);



function initialize() {
    /*ИНИЦИАЛИЗАЦИЯ КАРТЫ*/
    var myOptions = {
      zoom: 4,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: australia
    };
    var geocoder = new google.maps.Geocoder();
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById("directionsPanel"));
    
    
    

    var test = [], start, end,  st = [], en = [], way = [], waypts = []
        arr2 = [], way_adr = [], arr = [], ways = [], arr3 = [], testarr = [];
   
    //делаем выборку всех атрибутов lat & lng из xml
    var points = $("#test route");    
    for(var i = 0; i < points.length; i++) {   
        var address = points[i].getAttribute("address");
        //забиваем ими массив для геокодирования
        test.push(address + '|');                  
    }    
    //получаем стартовую и конечную точку    
    start = test.shift();
    end = test.pop();     
    $('#start').val(start);
    $('#end').val(end);
    var id = 0;
    //проходимся циклом по оставшимся элементам массива    
    for (var t = 0;t < test.length;t++) {
        //сплитим для получения lat & lng одной точки
        ways = test[t].split('|');
        //удаляем последнюю запятую после каждой координаты
        way = ways.slice(0, -1);
        geocoder.geocode( {'address': '"' + way + '"'}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                //если координаты найдены - записываем в массив
                //добавлям полоску, чтобы было по чем сплитить строку
                arr.push(results[0].geometry.location + '|');   
                //и отправялем в кукисы
                //document.cookie = "arr=" + arr;
                $("#arr").val(arr);                 
           } 
        });
    }             
}

function showRoute(){
    //получаем координаты промежуточных точек
    //var str = get_cookie("arr"); 
    var waypts = [];
    var st = $('#start').val();
    var en = $('#end').val();
    var start = st.substr(0, st.length -1);
    var end = en.substr(0 , en.length -1);        
    var str = $('#arr').val();
    //и обнуляем кукисы
    delete_cookie("arr");    
    //если кукисы не пустые
    if (str != null) {    
        //сплитим строку и получаем массив
        var arr2 = str.split('|');           
        //удаляем последний пустой элемент массива
        arr2.pop();    
        //перебираем промежуточные точки
        for (var i = 0; i < arr2.length; i++) {                    
            //удаляем ненужную запятую в начале 
            arr3 = arr2[i].slice(1);            
            waypts.push({
                location:arr3      
            });        
        }
        //waypts.pop();
        var request = {
            origin: start,
            destination: end,
            waypoints: waypts,
            optimizeWaypoints: true,
            travelMode: google.maps.DirectionsTravelMode.DRIVING
        };
    } else {
        //если промежуточные точки не указаны, учитываем 2 точки
        var request = {
            origin: start,
            destination: end,
            optimizeWaypoints: true,
            travelMode: google.maps.DirectionsTravelMode.DRIVING    
        };
    }

    directionsService.route(request, function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
          directionsDisplay.setDirections(response);
      }
    });
}
setTimeout(showRoute, 1000);

function get_cookie ( cookie_name ) {
  var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
 
  if ( results )
    return ( unescape ( results[2] ) );
  else
    return null;
}
function delete_cookie ( cookie_name ) {
  var cookie_date = new Date ( ); 
  cookie_date.setTime ( cookie_date.getTime() - 1 );
  document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}
function reloadStr(){
    location.reload();
}
